跳到主要内容

JavaScript 生成器

阐述

语法

JavaScript 函数类似,但是 function 变为 function*。在函数体中,用 yieldyield* 返回值,并且可以返回多次。

语义

设函数的名称为 f,则它可以被如下方式使用:

  • f.next():返回由 yieldyield* 返回的值,形式为 {value: ..., done: true/false}
  • for ... of:不需要判断。

实例

定义一个生成 ID 的函数:

function* idMaker() {
let index = 0;
while (true) {
yield index++;
}
}

const gen = idMaker();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // 3

性质

相关内容

生成器与 JavaScript 函数不同的地方:

参考文献